// ==========================================================================
// Interface file for Myclnt
//
// Solution for CPSC 4780 Fall 2010 Group Project
// FeiWang
// April 8, 2011
//
// This the Interface for client stub in RPC
// ==========================================================================
#ifndef MY_CLNT_H
#define MY_CLNT_H

#include "Myxdr.h"
#include  "Helper.h"
#include"ServerSocket.h"
#include"ClientSocket.h"
#include"SocketException.h"

using namespace std;
// ==========================================================================
// struct name : CLINET
// string host - host name / IP address for remote side
// string prog - prog number
// int port - port number in the remote side
// ==========================================================================
struct CLIENT{
      string host;
      int port; 
};

// ==========================================================================
// function name : my_clnt_call
// int - the prog number
// function will talk to portmapper , find infomation for service
// return a CLINET * 
// ==========================================================================
CLIENT * my_clnt_create(const int & prog);

// ==========================================================================
// function name : my_clnt_call
// CLIENT * - struct contain infomation of host and port
// int - which function to call in the remote side
// *xdr_func_arg - xdr function for argp
// argp - argument pointer
// *xdr_func_res - xdr function for clnt_res
// clnt_res - result
// this function will return back it everything works , else retrun false
// ============================================================================ 
bool my_clnt_call(CLIENT * rh,int proc,bool (*xdr_func_arg)(XDR *,char *,int),char * argp,bool (*xdr_func_res)(XDR *,char *,int),char * clnt_res);

#endif

